﻿using System;
using System.Collections.Generic;
using GDM.Hogar.Aplicacion.Formularios;
using GDM.Hogar.Entidades;
using GDM.Hogar.Managers.Contratos;
using Microsoft.Reporting.WinForms;

namespace GDM.Hogar.Aplicacion.Reportes
{
    public partial class FrmParteDiarioComedor
    #if DEBUG
     : AdaptadorFrm
    #else
     : FrmBase
    #endif
    {
        private readonly IParteDiarioComedorManager _parteDiarioComedorManager;

        public IList<ConsultaParteDiarioComedor> Datos { get; set; }
        public bool ConFiltro { get; set; }

        public FrmParteDiarioComedor(IParteDiarioComedorManager parteDiarioComedorManager)
        {
            if (parteDiarioComedorManager == null)
                throw new ArgumentNullException("parteDiarioComedorManager");

            _parteDiarioComedorManager = parteDiarioComedorManager;
            InitializeComponent();
        }

        private void SetearFechaActual()
        {
            var fechaActual = DateTime.Now;
            cmbMes.SelectedIndex = fechaActual.Month - 1;
        }

        private void BindearReporte()
        {
            rpParteDiarioComedor.LocalReport.DataSources.Clear();
            var datos = ConFiltro ? _parteDiarioComedorManager.ObtenerPartesDiarioComedor(cmbMes.SelectedIndex + 1, DateTime.Now.Year) : Datos;
            rpParteDiarioComedor.LocalReport.DataSources.Add(new ReportDataSource("ParteDiarioComedor_DS", datos));
            rpParteDiarioComedor.RefreshReport();
        }

        private void FrmParteDiarioComedor_Load(object sender, EventArgs e)
        {
            if (ConFiltro)
            {
                SetearFechaActual();
                cmbMes.SelectedIndexChanged += cmbMes_SelectedIndexChanged;
            }
            panel1.Visible = ConFiltro;
            rpParteDiarioComedor.Messages = new MensajesReportViewer();
            rpParteDiarioComedor.LocalReport.SetParameters(new ReportParameter("NombreInstitucion", ContextoHogar.Nombre));
            rpParteDiarioComedor.LocalReport.SetParameters(new ReportParameter("NombreCooperativa", ContextoHogar.Cooperativa));
            BindearReporte();
        }

        private void cmbMes_SelectedIndexChanged(object sender, EventArgs e)
        {
            BindearReporte();
        }

        protected override string Titulo
        {
            get { return ""; }
        }
    }
}
